home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / sys / amiga / programmer / 4339 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  1.9 KB

  1. Path: news.eunet.fi!fipnet!kone!jsaarinen
  2. Newsgroups: comp.sys.amiga.programmer
  3. X-NewsReader: IntuiNews 1.2b (31.7.94)
  4. References: <4glqbd$4ab@nnrp1.news.primenet.com>
  5. From: "Jyrki Saarinen" <jsaarinen@kone.fipnet.fi>
  6. Date: Tue, 27 Feb 96 16:00:26 UT
  7. Comments: Illegal date header - new date added by quicknews
  8. X-Original-Date: Tue, 27 Feb 96 11:47:56 
  9. MIME-Version: 1.0
  10. Content-Type: text/plain; charset=iso-8859-1
  11. Content-Transfer-Encoding: binary
  12. Subject: Re: Integer Sine tables?
  13. Message-ID: <38232691@kone.fipnet.fi>
  14.  
  15.  
  16. >  Since I am using assembly, how can I make sine tables without using an
  17. > FPU? (i.e. to use in 3d routines)
  18.  
  19. Here is a very short routine that calculates a sin/cos table:
  20. 68020 needed.
  21.  
  22. Size    equ    4096        ;number of entries
  23. Amp    equ    1024        ;the amplitude
  24. Pi    equ    205887        ;Pi^1 = (3.14159)^1*65536
  25. Pi2    equ    646814        ;Pi^2 = (3.14159)^2*65536
  26.  
  27.         lea     sin,a0
  28.         moveq   #0,d0                           ; s = 0
  29.         move.l  #2*Pi*Amp/Size,d1               ; t = 2 * pi / Size
  30.         move.l  #4*Pi2/Size*65536/Size,d2       ; r = t * t
  31.         move    #Size-1,d7                      ; number of values
  32.  
  33. si2.Loop
  34.         move.l  d0,(a0)                         ; Store the value (but
  35.         addq.l  #2,a0                           ; only the HIGH word!)
  36.  
  37.         move.l  d2,d3                           ; d3      = r
  38.         muls.l  d0,d4:d3                        ; d3 + d4 = r * s
  39.         sub.l   d4,d1                           ; t = t - r * s
  40.         add.l   d1,d0                           ; s = s + t
  41.         dbf     d7,si2.Loop                     ; all data done?
  42.     move.w    #1024/2-1,d7
  43.     lea    sin,a0
  44.     lea    sin+4096*2,a1
  45. .copy    move.l    (a0)+,(a1)+
  46.     dbf    d7,.copy
  47.         rts                                     ; good bye!
  48.  
  49.     section    bss,bss
  50.  
  51. sin            ds.w    1024
  52. cos            ds.w    4096
  53.  
  54. --                               _
  55. a Stellar programmer          _ //
  56. "Amiga - back for the future" \X/
  57.